package com.sunwayhorizo.health.platform.security.service.role;

import java.util.List;

import javax.ejb.Local;

import com.sunwayhorizo.health.business.dto.ResultsDTO;
import com.sunwayhorizo.health.platform.security.persistent.SecurityRole;

@Local
public interface SecurityRoleManagerLocal{
	
	/**
	 * 新增角色级联包含 permissionRoles，accountRoles，accRolePermissions
	 * @param role 实体   
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及实体生成的ID，若失败返回提示信息，标志为False
	 */
	ResultsDTO newSecurityRole(SecurityRole role);
	
	/**
	 * 批量删除角色级联包含 permissionRoles，accountRoles，accRolePermissions
	 * @param list 字符串List   
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，若失败返回提示信息，标志为False
	 */
	ResultsDTO delSecurityRole(List<String> list);
	
	/**
	 * 更新角色级联包含 permissionRoles，accountRoles，不包含 accRolePermissions
	 * @param role 实体   
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，若失败返回提示信息，标志为False
	 */
	ResultsDTO updateSecurityRole(SecurityRole role);
	
	/**
	 * 查询角色列表
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及实体列表，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityRoleList();
	
	/**
     * 查询根节点之外的角色列表
     * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及实体列表，若失败返回提示信息，标志为False
     */
	ResultsDTO findSecurityRoleListWithOutRootNode();
	/**
	 * 查询角色的详细信息
	 * @param roleId 实体Id
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询到的实体，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityRoleDetailById(String roleId);
	
	/**
	 * 查询角色的树形结构
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询到的角色实体列表树，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityRoleTree();
	
	/**
	 * 通过账号Id查询角色列表(联合屏蔽表)
	 * @param accountId 实体Id
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询到的角色实体列表，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityRoleListByAccountIdWithScreen(String accountId);
	
	/**
	 * 通过账号Id查询角色列表(不联合屏蔽表)
	 * @param accountId 实体Id
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询到的角色实体列表，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityRoleListByAccountIdWithOutScreen(String accountId);
	
	/**
	 * 通过角色Id得到权限列表
	 * @param roleId 实体Id
	 * @return 返回ResultsDTO,若成功返回提示信息，标志为True，以及查询到的角色实体列表，若失败返回提示信息，标志为False
	 */
	ResultsDTO findSecurityPermissionListByRoleId(String roleId);
	
	/**
	 * 对角色名称进行唯一性约束
	 * @param roleId	实体ID
	 * @param roleName	实体名称
	 * @return			返回ResultsDTO,若唯一返回提示信息，标志为True，若重复时返回提示信息，标志为False
	 */
	ResultsDTO validateUniqueSecurityRole(String roleId,String roleName);
}